diff --git a/index.php b/index.php
index 7852f9e..0ad8fd8 100644
--- a/index.php
+++ b/index.php
@@ -1,119 +1,166 @@
 <?php
+
 /*
-|---------------------------------------------------------------
-| PHP ERROR REPORTING LEVEL
-|---------------------------------------------------------------
-|
-| By default CI runs with error reporting set to ALL.  For security
-| reasons you are encouraged to change this when your site goes live.
-| For more info visit:  http://www.php.net/error_reporting
-|
-*/
+ *---------------------------------------------------------------
+ * PHP ERROR REPORTING LEVEL
+ *---------------------------------------------------------------
+ *
+ * By default CI runs with error reporting set to ALL.  For security
+ * reasons you are encouraged to change this when your site goes live.
+ * For more info visit:  http://www.php.net/error_reporting
+ *
+ */
 	error_reporting(E_ALL);
 
 /*
-|---------------------------------------------------------------
-| SYSTEM FOLDER NAME
-|---------------------------------------------------------------
-|
-| This variable must contain the name of your "system" folder.
-| Include the path if the folder is not in the same  directory
-| as this file.
-|
-| NO TRAILING SLASH!
-|
-*/
-	$system_folder = "system";
+ *---------------------------------------------------------------
+ * SYSTEM FOLDER NAME
+ *---------------------------------------------------------------
+ *
+ * This variable must contain the name of your "system" folder.
+ * Include the path if the folder is not in the same  directory
+ * as this file.
+ *
+ */
+	$system_path = "system";
 
 /*
-|---------------------------------------------------------------
-| APPLICATION FOLDER NAME
-|---------------------------------------------------------------
-|
-| If you want this front controller to use a different "application"
-| folder then the default one you can set its name here. The folder 
-| can also be renamed or relocated anywhere on your server.
-| For more info please see the user guide:
-| http://codeigniter.com/user_guide/general/managing_apps.html
-|
-|
-| NO TRAILING SLASH!
-|
-*/
+ *---------------------------------------------------------------
+ * APPLICATION FOLDER NAME
+ *---------------------------------------------------------------
+ *
+ * If you want this front controller to use a different "application"
+ * folder then the default one you can set its name here. The folder 
+ * can also be renamed or relocated anywhere on your server.  If
+ * you do, use a full server path. For more info please see the user guide:
+ * http://codeigniter.com/user_guide/general/managing_apps.html
+ *
+ * NO TRAILING SLASH!
+ *
+ */
 	$application_folder = "application";
 
 /*
-|===============================================================
-| END OF USER CONFIGURABLE SETTINGS
-|===============================================================
-*/
+ * --------------------------------------------------------------------
+ * DEFAULT CONTROLLER
+ * --------------------------------------------------------------------
+ *
+ * Normally you will set your default controller in the routes.php file.
+ * You can, however, force a custom routing by hard-coding a 
+ * specific controller class/function here.  For most applications, you
+ * WILL NOT set your routing here, but it's an option for those 
+ * special instances where you might want to override the standard
+ * routing in a specific front controller that shares a common CI installation.
+ *
+ * IMPORTANT:  If you set the routing here, NO OTHER controller will be
+ * callable. In essence, this preference limits your application to ONE
+ * specific controller.  Leave the function name blank if you need
+ * to call functions dynamically via the URI.
+ *
+ * Un-comment the $routing array below to use this feature
+ *
+ */
+ 	// The directory name, relative to the "controllers" folder.  Leave blank
+ 	// if your controller is not in a sub-folder within the "controllers" folder
+	// $routing['directory'] = '';
+	
+	// The controller class file name.  Example:  Mycontroller.php
+	// $routing['controller'] = '';
+	
+	// The controller function you wish to be called. 
+	// $routing['function']	= '';
 
 
 /*
-|---------------------------------------------------------------
-| SET THE SERVER PATH
-|---------------------------------------------------------------
-|
-| Let's attempt to determine the full-server path to the "system"
-| folder in order to reduce the possibility of path problems.
-| Note: We only attempt this if the user hasn't specified a 
-| full server path.
-|
-*/
-if (strpos($system_folder, '/') === FALSE)
-{
-	if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
+ * -------------------------------------------------------------------
+ *  CUSTOM CONFIG VALUES
+ * -------------------------------------------------------------------
+ *
+ * The $assign_to_config array below will be passed dynamically to the
+ * config class when initialized. This allows you to set custom config 
+ * items or override any default config values found in the config.php file.  
+ * This can be handy as it permits you to share one application between
+ * multiple front controller files, with each file containing different 
+ * config values.
+ *
+ * Un-comment the $assign_to_config array below to use this feature
+ *
+ */
+	// $assign_to_config['name_of_config_item'] = 'value of config item';
+
+
+
+// --------------------------------------------------------------------
+// END OF USER CONFIGURABLE SETTINGS.  DO NOT EDIT BELOW THIS LINE
+// --------------------------------------------------------------------
+
+
+
+
+/*
+ * ---------------------------------------------------------------
+ *  Resolve the system path for increased reliability
+ * ---------------------------------------------------------------
+ */
+	if (function_exists('realpath') AND @realpath($system_path) !== FALSE)
 	{
-		$system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
+		$system_path = realpath($system_path).'/';
 	}
-}
-else
-{
-	// Swap directory separators to Unix style for consistency
-	$system_folder = str_replace("\\", "/", $system_folder); 
-}
+	
+	// ensure there's a trailing slash
+	$system_path = rtrim($system_path, '/').'/';
 
-/*
-|---------------------------------------------------------------
-| DEFINE APPLICATION CONSTANTS
-|---------------------------------------------------------------
-|
-| EXT		- The file extension.  Typically ".php"
-| SELF		- The name of THIS file (typically "index.php")
-| FCPATH	- The full server path to THIS file
-| BASEPATH	- The full server path to the "system" folder
-| APPPATH	- The full server path to the "application" folder
-|
-*/
-define('EXT', '.php');
-define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
-define('FCPATH', str_replace(SELF, '', __FILE__));
-define('BASEPATH', $system_folder.'/');
-
-if (is_dir($application_folder))
-{
-	define('APPPATH', $application_folder.'/');
-}
-else
-{
-	if ($application_folder == '')
+	// Is the sytsem path correct?
+	if ( ! is_dir($system_path))
 	{
-		$application_folder = 'application';
+		exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);	
 	}
 
-	define('APPPATH', BASEPATH.$application_folder.'/');
-}
+/*
+ * -------------------------------------------------------------------
+ *  Now that we know the path, set the main path constants
+ * -------------------------------------------------------------------
+ */		
+	// The name of THIS file
+	define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
+
+	// The PHP file extension
+	define('EXT', '.php');
+
+ 	// Path to the system folder
+	define('BASEPATH', str_replace("\\", "/", $system_path));
+		
+	// Path to the front controller (this file)
+	define('FCPATH', str_replace(SELF, '', __FILE__));
+	
+	// Name of the "system folder"
+	define('SYSDIR', end(explode('/', trim(BASEPATH, '/'))));		
+
+
+	// The path to the "application" folder
+	if (is_dir($application_folder))
+	{
+		define('APPPATH', $application_folder.'/');
+	}
+	else
+	{		
+		if ( ! is_dir(BASEPATH.$application_folder.'/'))
+		{
+			exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".SELF);	
+		}
+	
+		define('APPPATH', BASEPATH.$application_folder.'/');
+	}
 
 /*
-|---------------------------------------------------------------
-| LOAD THE FRONT CONTROLLER
-|---------------------------------------------------------------
-|
-| And away we go...
-|
-*/
-require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;
-
+ * --------------------------------------------------------------------
+ * LOAD THE BOOTSTRAP FILE
+ * --------------------------------------------------------------------
+ *
+ * And away we go...
+ *
+ */
+require_once BASEPATH.'core/CodeIgniter'.EXT;
 
 /* End of file index.php */
 /* Location: ./index.php */
\ No newline at end of file
